/**
 * Author(s): xuming.Wong <xuming.Wong@gmail.com>
 */
#ifndef _PQ_WaterManager_H_
#define _PQ_WaterManager_H_

#include "SceneObject.h"

#include "SkyX.h"

namespace PQClient
{
	// Shadow mode
	enum ShadowMode
	{
		SM_NONE = 0,
		SM_LOW  = 1,
		SM_HIGH = 2
	};

	class SkyWaterEffect
	{
	public:
		SkyWaterEffect(PQEngine::SceneObject* sceneObject);
		void update(float deltaT);
		void updateLighting();
		void createSky();

		void createGradient();

		void setShadowMode( Ogre::SceneManager* mgr, ShadowMode shadowMode );
		void createWater();
	protected:
		PQEngine::SceneObject* _sceneObject;
		SkyX::ColorGradient _waterGradient;

		Ogre::Light *_light0;
		Ogre::Light *_light1;
		SkyX::ColorGradient mSunGradient;
		SkyX::ColorGradient mAmbientGradient;
	};
}
#endif
